﻿using MovingChame.Web.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MovingChame.Web.Infrastructure
{
    interface ITourProvider
    {
        int AddTour(string name, int tourLength, TourType tourType, string summary, string description, int budget, int creatorId);

        bool UpdateTour(int tourId, Tour updatedTour);

        bool ActivateTour(int tourId);

        bool RemoveTour(int tourId);

        bool VoteUpTour(int tourId);

        bool VoteDownTour(int tourId);

        IQueryable<Tour> SearchToursInName(string keyword);

        IQueryable<Tour> SearchToursInSummary(string keyword);

        IQueryable<Tour> SearchTours(string keyword);

        Tour GetTourById(int tourId);

        IQueryable<Tour> GetToursByType(double latitude, double longitude, TourType tourType);

        IQueryable<Tour> GetToursByCreator(int creatorId);

        IQueryable<Tour> GetPrivateToursByCreator(int creatorId);

        IQueryable<Tour> GetPublicToursByCreator(int creatorId);

        IQueryable<Tour> GetPublicTours(double latitude, double longitude);

        IQueryable<Tour> GetPublicToursByDetail(double latitude, double longitude, List<TourType> types, int length, int budget);
    }
}